<?php
// 服务器端记录验证码信息，便于用户表单输入后做校验
session_start();
$image = imagecreatetruecolor(100, 30);
// 将背景颜色设置为白色，并从（0,0）处铺满地图
$bgcolor=imagecolorallocate($image,255,255,255);
imagefill($image, 0, 0, $bgcolor);
// 空字符串，每循环一次，追加到字符串后面
$captch_code='';
// 通过for循环，产生4个随机数
for ($i=0;$i<4;$i++){
	$fontsize=6;   // 字体大小，字体颜色
	$fontcolor=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
	$fontcontent=rand(0,9);// 内容：产生随机数字0-9；
	// 当$i=0时，即第一个随机数只能出现在rand（5,10）的位置，第二个出现在25+rand（5,10）的位置，以此类推
	// 同理，$y坐标只能出现在rand（5,10）的位置
	$x=($i*100/4)+rand(5,10);
	$y=rand(5,10);
	// 产生的字符按照规定的大小，坐标，内容颜色进行显示
	imagestring($image,$fontsize,$x,$y,$fontcontent, $fontcolor);
	// $capth_code=$captch_code.$fontcontent;意思是下一个字符追加到空格后面，坐标要向右移位
	$captch_code.=$fontcontent;
}
// 将产生的四位验证码赋值给超级全局变量，标记到服务器上，便于用户表单输入后做校验
$_SESSION['yzcode']=$captch_code;
// 生成png图片
header('content-type:image/png');
imagepng($image);
// 销毁图片
imagedestroy($image);




// 干扰元素——点
for($i=0;$i<200;$i++){
	$pointcolor=imagecolorallocate($image, rand(80,220), rand(80,220), rand(80,220));
	imagesetpixel($image, rand(1,99), rand(1,29), $pointercolor);
}
// imagesetpixel(resource $image,int $x,int $y,int $color)
// imagesetpixel()在$image图像中用$color颜色在x，y坐标（图像右上角为0,0）上画一个点
// 一共循环200次，即产生200个点


// 干扰元素——线
for($i=0;$i<3;$i++){
	$linecolor=imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));
	imageline($image, rand(1,99),rand(1,29), rand(1,99), rand(1,29), $linecolor);
}
// 线段两端点的坐标，产生3条线段

?>